package com.example.onlinemallsystem.mapper;

import com.example.onlinemallsystem.entity.Product;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface ProductMapper {

    /**
     *  查询所有商品
     * @return 商品集合
     */
    List<Product> selectAll();

    /**
     * 增加商品
     * @param product 商品
     * @return 影响行数
     */
    int insert(Product product);

    /**
     * 通过id删除
     * @param id 商品id
     * @return 影响行数
     */
    int deleteProduct(Long id);

    /**
     * 更新商品信息
     * @param product 商品对象
     * @return 影响行数
     */
    int update(Product product);

    /**
     * 通过id查找
     * @param id 商品id
     * @return 商品对象
     */
    Product selectById(Long id);

    /**
     * 通过商品分类查找
     * @param categoryId 商品分类id
     * @return 商品集合
     */
    List<Product> selectByCategoryId(Long categoryId);

    /**
     * 通过商品名查询商品
     * @param name 商品名
     * @return 商品集合
     */
    List<Product> selectByName(String name);

    /**
     * 增加销量（减少库存）
     * @param params 参数：包括id，sales，stock
     * @return 影响行数
     */
    int increaseSales(Map<String, Object> params);

    /**
     * 商品名是否重复
     * @param name 商品名称
     * @return 影响行数
     */
    int existsByName(String name);
    List<Product> selectProductsBySellerId(Long sellerId);

    List<Product> selectSellerProductsByName(Long sellerId,String name);

    int updateProductStock(Long id, Integer stock);

    int updateProductPrice( Long id,  Double price);
}